package com.zenithmind.note.service;

import com.zenithmind.note.pojo.valueobject.NoteStatistics;

/**
 * 笔记统计服务接口
 * 遵循单一职责原则：只负责笔记统计相关的业务逻辑
 * 
 * @author ZenithMind
 * @since 2024-01-01
 */
public interface NoteStatisticsService {
    
    /**
     * 获取笔记统计信息
     * 
     * @param noteId 笔记ID
     * @return 统计信息
     */
    NoteStatistics getNoteStatistics(String noteId);
    
    /**
     * 更新浏览次数
     * 
     * @param noteId 笔记ID
     * @param increment 增量
     */
    void updateViewCount(String noteId, int increment);
    
    /**
     * 更新点赞次数
     * 
     * @param noteId 笔记ID
     * @param increment 增量（可以为负数）
     */
    void updateLikeCount(String noteId, int increment);
    
    /**
     * 更新评论次数
     * 
     * @param noteId 笔记ID
     * @param increment 增量（可以为负数）
     */
    void updateCommentCount(String noteId, int increment);
    
    /**
     * 更新收藏次数
     * 
     * @param noteId 笔记ID
     * @param increment 增量（可以为负数）
     */
    void updateFavoriteCount(String noteId, int increment);
    
    /**
     * 更新分享次数
     * 
     * @param noteId 笔记ID
     * @param increment 增量
     */
    void updateShareCount(String noteId, int increment);
    
    /**
     * 批量更新统计信息
     * 
     * @param noteId 笔记ID
     * @param statistics 新的统计信息
     */
    void updateStatistics(String noteId, NoteStatistics statistics);
    
    /**
     * 重新计算笔记的所有统计信息
     * 
     * @param noteId 笔记ID
     * @return 重新计算后的统计信息
     */
    NoteStatistics recalculateStatistics(String noteId);
}
